The increasing demand for the time sharing of computer resources among a plurality of different, relatively low speed, external I/O devices has caused a number of evolutionary changes in computer system architecture over the years. Many of these changes have centered around the I/O subsystem. I/O channel controllers have been devised to avoid restricting the processing speed available from modern central processors and to attempt to accommodate increasing numbers of I/O devices. I/O channel controllers are usually of either a bulk storage type or a character type. A bulk storage I/O channel controller is used for controlling high speed transfers of relatively large amounts of data from one or more external bulk storage devices, such as disk drives, over the bus of the computer system to the system main memory. Due to the relatively small numbers of bulk data transfers and the relatively large amount of data transferred during each single continuous high speed transfer operation, the efficiency of operation of bulk storage channel controllers is not usually considered to be a major limiting factor. However, substantial limitations have been caused by attempting to transfer relatively small amounts of data, usually characters, a relatively large number of times on an intermittent basis, as is the case with a relatively large number of relatively low and medium speed I/O devices such as terminals and printers. The character I/O channel controllers which have evolved in response to the increased use of low and medium speed I/O devices have continued to increase in complexity and may be reaching the point of diminished effectiveness relative to the improvements attempted to be gained.
The most common version of a character I/O channel controller uses its own relatively complex processor to multiplex data to and from a fixed number (e.g. 8, 16 or 32) of I/O devices connected to it. The character channel controller's I/O ports may be limited to a specific type of device for strictly local connection. If the character channel controller is not device specific, a similarly complex I/O adapter is required to communicate between the I/O channel controller and each device or group of devices. The operating functions of the I/O channel controller, the I/O adapter, the host computer, and the I/O devices are shared between all of these components. The communication and control protocol used to accomplish such communication is usually complex, requires substantial overhead in the operating system, generally complicates the transfer of I/O data, and usually limits the data throughput.
The majority of the cost incurred in connecting devices to the computer systems is created as a result of the relatively complex operating nature of the I/O processors in the channel controllers and adapters and the protocol which is required. In order to defray some of this relatively high cost, it is typical to provide a multiplicity of ports at each I/O adapter for the purpose of connecting a multiplicity of I/O devices. The I/O devices must usually be located in close physical proximity to the I/O adapter because cable lengths can restrict the speed at which reliable data transfers can be accomplished. To connect a new I/O device to the computer system in cases where an unused port on a multiport I/O adapter is unavailable, another multiport I/O adapter must be connected to the channel controller. The user incurs connection costs which are not necessarily related to the addition of each new I/O device on the system, because the addition of each new multiport adapter involves paying for the capability of connecting a multiplicity of I/O devices, whether or not all of these connection ports are utilized. In some situations, the cost of connecting an I/O device to the system may exceed the cost of the I/O device itself.
The type of multiplexing used in character I/O channel controllers and adapters may also create limitations. One type of multiplexing is known as centralized polling. With centralized polling, the central processor sends signals which interrogate each I/O device in order and regardless of whether or not it has data to send. Another form of polling, known as induced polling or polling on demand, initiates this type of centralized polling only when an adapter sends a change of status signal. Induced polling avoids the processing burden or overhead of continuously polling all of the adapters and I/O devices, but requires all of the adapters to be polled in order once during any polling sequence. Polling requires considerable software functionality at either the central processor or channel controller, and wastes time in polling both the active and inactive I/O devices, and in interpreting the results of the polling.
Another type of multiplexing is generally referred to as access on demand. Access on demand multiplexing usually involves a request from an adapter for access to the communication link and some form of arbitration for resolving competing requests from different adapters. Signal propagation delays in arbitration systems can create significant adverse influences. Because signal propagation delays increase with greater physical cable lengths, arbitration techniques utilizing the central processor or system bus controller to resolve competing requests, known as centralized arbitration schemes, are usually limited to computer busses and other applications where the distances between the I/O adapters generating the requests and the arbitration logic extend no more than a few feet.
Token passing is a technique of distributed control or arbitration which has been used with success in local area networks (LAN).